package com.zpf.factory;

import java.util.Properties;

//自定义bean工厂
public class MyBeanFactory {
    private Properties properties = new Properties();

    //无参构造方法
    public MyBeanFactory() {
    }

//有参构造方法,config：配置文件的名字
    public MyBeanFactory(String config) throws Exception{
//        通过输入流，根据配置文件的名字和路径，读取配置文件到properties对象中
        properties.load(MyBeanFactory.class.getResourceAsStream(config));
    }

//    获取java类对象，也就是javaBean对象，对象由这个工厂产生
    public Object getBean(String beanName) throws  Exception{
//        1.获取类的路径,也就是实现类的全限定名
//        例如：com.zpf.service.impl.UserServiceImpl1
        String classPath = properties.getProperty(beanName);
//        2.判断这个路径是否为空，如果不为空再用反射获取类对象
        if (classPath != null) {
//        3.如果不为空那么使用反射类加载的对象
            Class clazz = Class.forName(classPath);
//        4.获取对象的实例返回
           return clazz.newInstance();

        }
//        5.如果为空返回null
        return null;
    }

}
